import { Button, Column, Form, FormButtons, FormField, FormFieldArray, FormSubmitButton, Grid, Icon, Loading, Row, Text, TextField, } from '@umami/react-zen'; import { useMessages, useReportQuery, useUpdateQuery } from '@/components/hooks'; import { Plus, X } from '@/components/icons'; import { ActionSelect } from '@/components/input/ActionSelect'; import { LookupField } from '@/components/input/LookupField'; const FUNNEL_STEPS_MAX = 8; export function FunnelEditForm({ id, websiteId, onSave, onClose, }: { id?: string; websiteId: string; onSave?: () => void; onClose?: () => void; }) { const { formatMessage, labels } = useMessages(); const { data } = useReportQuery(id); const { mutateAsync, error, isPending, touch } = useUpdateQuery(`/reports${id ? `/${id}` : ''}`); const handleSubmit = async ({ name, ...parameters }) => { await mutateAsync( { ...data, id, name, type: 'funnel', websiteId, parameters }, { onSuccess: async () => { touch('reports:funnel'); touch(`report:${id}`); onSave?.(); onClose?.(); }, }, ); }; if (id && !data) { return ; } const defaultValues = { name: data?.name || '', window: data?.parameters?.window || 60, steps: data?.parameters?.steps || [{ type: 'path', value: '' }], }; return (
value.length > 1 || 'At least two steps are required', }} > {({ fields, append, remove }) => { return ( {fields.map(({ id }: { id: string }, index: number) => { return ( {({ field, context }) => { const type = context.watch(`steps.${index}.type`); return ; }} ); })} ); }} {formatMessage(labels.save)}
); }